home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / libx11inc.lha / X11 / Xm / RowColumnP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-13  |  19.2 KB  |  512 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992 OPEN SOFTWARE FOUNDATION, INC.
  3.  * ALL RIGHTS RESERVED
  4. */ 
  5. /*   $RCSfile: RowColumnP.h,v $ $Revision: 1.54 $ $Date: 92/07/31 14:33:38 $ */
  6. /*
  7. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  8. #ifndef _XmRowColumnP_h
  9. #define _XmRowColumnP_h
  10.  
  11. #include <Xm/RowColumn.h>
  12. #include <Xm/ManagerP.h>
  13.  
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17.  
  18. /* Button Event Status Record for popup verification at manage time */
  19. typedef struct _XmButtonEventStatusRec
  20. {
  21.     Time time;
  22.     Boolean verified;
  23. #ifndef WAIT_FOR_BETTER_GRAB_SOLUTION
  24.     Boolean waiting_to_be_managed;
  25. #endif
  26.     XButtonEvent event;
  27. } XmButtonEventStatusRec;
  28.  
  29. /* replay info rec - last menu that was posted before event replay */
  30. typedef struct _XmReplayInfoRec
  31. {
  32.     Time time;
  33.     Widget toplevel_menu;
  34. } XmReplayInfoRec;
  35.  
  36. typedef struct _XmMenuFocusRec
  37. {
  38.     Widget oldWidget;
  39.     Window oldFocus;
  40.     int    oldRevert;
  41. } XmMenuFocusRec;
  42.  
  43. /* Menu State is per screen */
  44. typedef struct _XmMenuStateRec
  45. {
  46.    Widget RC_LastSelectToplevel;
  47.    XmButtonEventStatusRec RC_ButtonEventStatus;
  48.    XmReplayInfoRec RC_ReplayInfo;
  49. /*
  50.  * needed for funky menubar mode so that the traversal can be restored
  51.  * to the correct highlighted item when we are done.
  52.  */
  53.    Widget RC_activeItem;
  54.    XmMenuFocusRec RC_menuFocus;
  55. /*
  56.  * A workaround is provided to allow applications to get insensitive
  57.  * menu items.  This is useful for context "sensitive-shared-tear off-
  58.  * accelerated" menu items.  Accessed via internal (for now) function,
  59.  * _XmAllowAcceleratedInsensitiveUmanagedMenuItems().
  60.  */
  61.    Boolean RC_allowAcceleratedInsensitiveUnmanagedMenuItems;
  62.    Time MS_LastManagedMenuTime;
  63.    Boolean MU_InDragMode;
  64.    Widget MU_CurrentMenuChild;
  65.    Boolean MU_InPMMode;
  66. } XmMenuStateRec, *XmMenuState;
  67.  
  68.  
  69. typedef struct _XmRCKidGeometryRec
  70. {
  71.   Widget kid;
  72.   XtWidgetGeometry  box;
  73.   Dimension margin_top;
  74.   Dimension margin_bottom;
  75.   Dimension baseline;
  76. } XmRCKidGeometryRec, *XmRCKidGeometry;
  77.  
  78. /* The RowColumn instance record */
  79.  
  80. typedef    struct _XmRowColumnPart
  81. {
  82.     Dimension       margin_height;  /* margin around inside of widget */
  83.     Dimension       margin_width;
  84.  
  85.  
  86.     Dimension       spacing;        /* pixels between entries */
  87.     Dimension       entry_border;   /* size of entry borders */
  88.  
  89.                     /* next only used w/ menubars */
  90.  
  91.     Widget      help_pushbutton;    /* ptr to help pushbutton widget */
  92.  
  93.     Widget      cascadeBtn;         /* if this menu is pulled down by a */
  94.                                     /* pulldown widget this will point */
  95.                                     /* at the pulldown.  needed to go */
  96.                                     /* up the cascade */
  97.  
  98.                     /* next two only used w/ option menus */
  99.                     /* they are really only temporary */
  100.                     /* since the data is passed off to */
  101.                     /* the pulldown widget which is */
  102.                     /* automatically built */
  103.  
  104.     XmString  option_label;         /* label for option menu pulldown */
  105.  
  106.     Widget      option_submenu;     /* which submenu to pulldown */
  107.  
  108.  
  109.     XmRCKidGeometry   boxes;          /* when doing menu layouts is an */
  110.                                     /* array of geo req's to make it easy */
  111.  
  112.     WidgetClass     entry_class;    /* if homogeneous, what class */
  113.  
  114.     XtCallbackList  entry_callback; /* a child fired off */
  115.     XtCallbackList  map_callback;   /* about to be mapped call back */
  116.     XtCallbackList  unmap_callback; /* about to be unmapped call back */
  117.  
  118.     Widget      memory_subwidget;   /* id of last subwidget that */
  119.                                     /* fired off.  Recorded by the */
  120.                                     /* entry_fired proc, can be set too */
  121.                                     /* this causes mouse/muscle memory */
  122.                                     /* to also be reset */
  123.  
  124.     short       num_columns;        /* if columnar packing this is how */
  125.                                     /* many columns to use */
  126.  
  127.     String        menuPost;        /* a translation for posting popups */
  128.     unsigned int    postButton;     /* active mouse button */
  129.     int             postEventType;  /* active mouse event type */
  130.     unsigned int    postModifiers;  /* active mouse modifier */
  131.  
  132.     String      menu_accelerator;
  133.     KeySym        mnemonic;
  134.     XmStringCharSet mnemonicCharSet;
  135.  
  136.     unsigned char   entry_alignment; /* type of label alignment */
  137.                                      /* our children should have */
  138.  
  139.                     /* next two are layout, Tight is the */
  140.                     /* standard menubar packing.  Columns */
  141.                     /* is radio box style, orientation */
  142.                     /* determines if it is column or row */
  143.                     /* major, Vert = column major */
  144.  
  145.     unsigned char   packing;    /* entry packing (layout) style */
  146.  
  147.     unsigned char   type;       /* temporary: diff between menu/bar */
  148.  
  149.     unsigned char   orientation;    /* horizontal or vertical */
  150.  
  151.                     /* next two indicate how the widget */
  152.                     /* responds to size changes if there */
  153.                     /* is no geo mgr.  If true then the */
  154.                     /* dimension is never changed.  Set */
  155.                     /* to true if dimension is spec'd */
  156.                     /* at create time */
  157.  
  158.     Boolean     armed;      /* controls whether pulldowns work */
  159.                             /* or not, button down in any part of */
  160.                             /* the menubar arms it, this is a bit field  */
  161.                             /* used for other internal flags, see macros */ 
  162.  
  163.                     /* next is only valid for popup menus */
  164.  
  165.     Boolean     adjust_margin;  /* T/F, indicating if we should force */
  166.                                 /* all subwidgets to have similar */
  167.                                 /* margins */
  168.     
  169.     Boolean     adjust_last;    /* Indicates whether or not the last row */
  170.                                 /* row or column should be stretched to  */
  171.                                 /* the edge of the row_column widget.    */
  172.  
  173.     Boolean     do_alignment;   /* T/F, do we force alignment on all */
  174.                                 /* our children */
  175.  
  176.     Boolean     radio;          /* T/F, do we do the toggle button */
  177.                                 /* 'only-one-down' enforcement */
  178.  
  179.     Boolean     radio_one;      /* T/F, must have one radio button */
  180.                                 /* set to on */
  181.  
  182.  
  183.     Boolean     homogeneous;    /* T/F, do we only allow a single */
  184.                                 /* class of children */
  185.  
  186.     Boolean     resize_width;
  187.     Boolean     resize_height;
  188.  
  189.     Boolean     popup_enabled;
  190.  
  191.     Dimension    old_width;        /* save the old width, etc to use  */
  192.     Dimension    old_height;        /* at resize time since it now has */
  193.     Dimension    old_shadow_thickness;   /* NW gravity                      */
  194.  
  195.     Widget *    postFromList;        /* list for sharing menupanes */
  196.     int        postFromCount;        /* count of the list */
  197.     int        postFromListSize;    /* size of the malloc'ed list */
  198.  
  199.     Widget      lastSelectToplevel;     /* returned in XmGetPostedFromWidget*/ 
  200.     Widget    popupPosted;        /* popup submenu currently posted */
  201.  
  202.     unsigned char oldFocusPolicy;    /* save when menus begin traversal */
  203.  
  204.     /***************** 1.2 ***************/
  205.     unsigned char    TearOffModel;    /* enable/disable flag */
  206.     Widget        ParentShell;    /* Save the parent shell when torn */
  207.     Widget        tear_off_control;
  208.     Boolean        to_state;    /* tear off state */
  209.     /* tear off activate/deactivate callbacks */
  210.     XtCallbackList    tear_off_activated_callback;
  211.     XtCallbackList    tear_off_deactivated_callback;
  212.     Widget        tear_off_lastSelectToplevel;
  213.     Widget        tear_off_focus_item;    /* when tear off is inactive */
  214.     
  215.     unsigned char    entry_vertical_alignment;
  216.     unsigned char    popup_menu_click;
  217.     XtIntervalId    popup_timeout_timer;
  218. } XmRowColumnPart;
  219.  
  220.  
  221. /* Full instance record declaration */
  222.  
  223. typedef struct _XmRowColumnRec
  224. {
  225.     CorePart        core;
  226.     CompositePart    composite;
  227.     ConstraintPart    constraint;
  228.     XmManagerPart    manager;
  229.     XmRowColumnPart    row_column;
  230. } XmRowColumnRec;
  231.  
  232. typedef struct _XmRowColumnWidgetRec /* OBSOLETE (for compatibility only).*/
  233. {
  234.     CorePart        core;
  235.     CompositePart    composite;
  236.     ConstraintPart    constraint;
  237.     XmManagerPart    manager;
  238.     XmRowColumnPart    row_column;
  239. } XmRowColumnWidgetRec;
  240.  
  241.  
  242.  
  243. /* RowColumn class structure */
  244.  
  245. typedef struct _XmRowColumnClassPart
  246. {
  247.     XmMenuProc    menuProcedures; /* proc to interface with menu widgets */
  248.     XtActionProc armAndActivate; /* proc triggered by acclerator */
  249.     XmMenuTraversalProc traversalHandler;/* proc to handle menu traversal */
  250.     XtPointer   extension;      /* Pointer to extension record */
  251. } XmRowColumnClassPart;
  252.  
  253.  
  254.  
  255. typedef struct _XmRowColumnClassRec 
  256. {
  257.     CoreClassPart        core_class;
  258.     CompositeClassPart        composite_class;
  259.     ConstraintClassPart        constraint_class;
  260.     XmManagerClassPart        manager_class;
  261.     XmRowColumnClassPart    row_column_class;
  262. } XmRowColumnClassRec;
  263.  
  264. externalref XmRowColumnClassRec     xmRowColumnClassRec;
  265.  
  266.  
  267.  
  268. /* Constraint Definition */
  269.  
  270. /* No constraint resources */
  271.  
  272. typedef struct _XmRowColumnConstraintPart
  273. {
  274.     Boolean    was_managed;
  275.         Dimension margin_top;
  276.         Dimension margin_bottom;
  277.         Dimension baseline;
  278.     short position_index;
  279. } XmRowColumnConstraintPart;
  280.  
  281. typedef struct _XmRowColumnConstraintRec
  282. {
  283.     XmManagerConstraintPart manager;
  284.     XmRowColumnConstraintPart row_column;
  285. } XmRowColumnConstraintRec;
  286.  
  287.  
  288. /* Access Macros */
  289. #define XmRC_ARMED_BIT          (1 << 0)    
  290. #define XmRC_BEING_ARMED_BIT  (1 << 1)        /* bits in menu's armed byte */
  291. #define XmRC_EXPOSE_BIT       (1 << 2)        /* used in both menu and */
  292. #define XmRC_WINDOW_MOVED_BIT (1 << 3)        /* popup menu, careful */
  293. #define XmRC_WIDGET_MOVED_BIT (1 << 4)
  294. #define XmRC_POPPING_DOWN_BIT (1 << 5)
  295. #define XmRC_FROM_RESIZE_BIT  (1 << 6)
  296.  
  297. #define RC_IsArmed(m)     (((XmRowColumnWidget)(m))->row_column.armed & XmRC_ARMED_BIT)
  298. #define RC_BeingArmed(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_BEING_ARMED_BIT)
  299. #define RC_DoExpose(m)     (((XmRowColumnWidget)(m))->row_column.armed & XmRC_EXPOSE_BIT)
  300. #define RC_WidgetHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WIDGET_MOVED_BIT)
  301. #define RC_WindowHasMoved(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_WINDOW_MOVED_BIT)
  302. #define RC_PoppingDown(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_POPPING_DOWN_BIT)
  303. #define RC_FromResize(m) (((XmRowColumnWidget)(m))->row_column.armed & XmRC_FROM_RESIZE_BIT)
  304.  
  305.  
  306. #define RC_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  307.  
  308. #define RC_SetArmed(m,v)  RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_ARMED_BIT, v)
  309. #define RC_SetBeingArmed(m,v)  RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_BEING_ARMED_BIT, v)
  310. #define RC_SetExpose(m,v) RC_SetBit (((XmRowColumnWidget)(m))->row_column.armed, XmRC_EXPOSE_BIT, v)
  311. #define RC_SetWidgetMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WIDGET_MOVED_BIT,v)
  312. #define RC_SetWindowMoved(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_WINDOW_MOVED_BIT,v)
  313. #define RC_SetPoppingDown(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_POPPING_DOWN_BIT,v)
  314. #define RC_SetFromResize(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.armed, XmRC_FROM_RESIZE_BIT,v)
  315.  
  316. #define RC_MarginW(m)        (((XmRowColumnWidget)(m))->row_column.margin_width)
  317. #define RC_MarginH(m)        (((XmRowColumnWidget)(m))->row_column.margin_height)
  318.  
  319. #define RC_Entry_cb(m)        (((XmRowColumnWidget)(m))->row_column.entry_callback)
  320. #define RC_Map_cb(m)        (((XmRowColumnWidget)(m))->row_column.map_callback)
  321. #define RC_Unmap_cb(m)        (((XmRowColumnWidget)(m))->row_column.unmap_callback)
  322.  
  323. #define RC_Orientation(m)   (((XmRowColumnWidget)(m))->row_column.orientation)
  324. #define RC_Spacing(m)        (((XmRowColumnWidget)(m))->row_column.spacing)
  325. #define RC_EntryBorder(m)   (((XmRowColumnWidget)(m))->row_column.entry_border)
  326. #define RC_HelpPb(m)        (((XmRowColumnWidget)(m))->row_column.help_pushbutton)
  327. #define RC_DoMarginAdjust(m)  (((XmRowColumnWidget)(m))->row_column.adjust_margin)
  328. #define RC_EntryAlignment(m)  (((XmRowColumnWidget)(m))->row_column.entry_alignment)
  329. #define RC_EntryVerticalAlignment(m)  (((XmRowColumnWidget)(m))->row_column.entry_vertical_alignment)
  330. #define RC_Packing(m)       (((XmRowColumnWidget)(m))->row_column.packing)
  331. #define RC_NCol(m)       (((XmRowColumnWidget)(m))->row_column.num_columns)
  332. #define RC_AdjLast(m)       (((XmRowColumnWidget)(m))->row_column.adjust_last)
  333. #define RC_AdjMargin(m)       (((XmRowColumnWidget)(m))->row_column.adjust_margin)
  334. #define RC_MemWidget(m)       (((XmRowColumnWidget)(m))->row_column.memory_subwidget)
  335. #define RC_CascadeBtn(m)   (((XmRowColumnWidget)(m))->row_column.cascadeBtn)
  336. #define RC_OptionLabel(m)  (((XmRowColumnWidget)(m))->row_column.option_label)
  337. #define RC_OptionSubMenu(m)  (((XmRowColumnWidget)(m))->row_column.option_submenu)
  338. #define RC_RadioBehavior(m)  (((XmRowColumnWidget)(m))->row_column.radio)
  339. #define RC_RadioAlwaysOne(m) (((XmRowColumnWidget)(m))->row_column.radio_one)
  340. #define RC_PopupPosted(m)    (((XmRowColumnWidget)(m))->row_column.popupPosted)
  341. #define RC_ResizeHeight(m)    (((XmRowColumnWidget)(m))->row_column.resize_height)
  342. #define RC_ResizeWidth(m)     (((XmRowColumnWidget)(m))->row_column.resize_width)
  343. #define RC_Type(m)           (((XmRowColumnWidget)(m))->row_column.type)
  344. #define RC_EntryClass(m)     (((XmRowColumnWidget)(m))->row_column.entry_class)
  345. #define RC_IsHomogeneous(m)  (((XmRowColumnWidget)(m))->row_column.homogeneous)
  346. #define RC_Boxes(m)          (((XmRowColumnWidget)(m))->row_column.boxes)
  347. #define RC_PopupEnabled(m)   (((XmRowColumnWidget)(m))->row_column.popup_enabled)
  348. #define RC_MenuAccelerator(m)  (((XmRowColumnWidget)(m))->row_column.menu_accelerator)
  349. #define RC_Mnemonic(m)   (((XmRowColumnWidget)(m))->row_column.mnemonic)
  350. #define RC_MnemonicCharSet(m)   (((XmRowColumnWidget)(m))->row_column.mnemonicCharSet)
  351. #define RC_MenuPost(m) (((XmRowColumnWidget) m)->row_column.menuPost)
  352. #define RC_PostButton(m) (((XmRowColumnWidget) m)->row_column.postButton)
  353. #define RC_PostModifiers(m) (((XmRowColumnWidget) m)->row_column.postModifiers)
  354. #define RC_PostEventType(m) (((XmRowColumnWidget) m)->row_column.postEventType)
  355.  
  356. #define RC_OldFocusPolicy(m) (((XmRowColumnWidget) m)->row_column.oldFocusPolicy)
  357. #define RC_ParentShell(m) (((XmRowColumnWidget) m)->row_column.ParentShell)
  358. #define RC_TearOffControl(m) (((XmRowColumnWidget) m)->row_column.tear_off_control)
  359. #define RC_TearOffModel(m) (((XmRowColumnWidget) m)->row_column.TearOffModel)
  360.  
  361. #define RC_popupMenuClick(m) (((XmRowColumnWidget)(m))->row_column.popup_menu_click)
  362.  
  363. /* Tear Off State */
  364.  
  365. #define XmTO_TORN_OFF_BIT    (1 << 0)
  366. #define XmTO_FROM_INIT_BIT    (1 << 1)
  367. #define XmTO_VISUAL_DIRTY_BIT    (1 << 2)
  368. #define XmTO_ACTIVE_BIT        (1 << 3)
  369.  
  370. #define RC_SetTornOff(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_TORN_OFF_BIT,v)
  371.  
  372. #define RC_TornOff(m) (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_TORN_OFF_BIT)
  373.  
  374. #define RC_SetFromInit(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_FROM_INIT_BIT,v)
  375.  
  376. #define RC_FromInit(m)    (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_FROM_INIT_BIT)
  377.  
  378. #define RC_SetTearOffDirty(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_VISUAL_DIRTY_BIT,v)
  379.  
  380. #define RC_TearOffDirty(m) (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_VISUAL_DIRTY_BIT)
  381.  
  382. #define RC_TearOffActive(m) (((XmRowColumnWidget)(m))->row_column.to_state & XmTO_ACTIVE_BIT)
  383.  
  384. #define RC_SetTearOffActive(m,v) RC_SetBit(((XmRowColumnWidget)(m))->row_column.to_state, XmTO_ACTIVE_BIT,v)
  385.  
  386. #define initial_value 0
  387.  
  388. /* Defines used when calling _XmProcessMenuTree() */
  389.  
  390. #define XmADD     0
  391. #define XmDELETE  1
  392. #define XmREPLACE 2
  393.  
  394.  
  395. /* Defines used when calling _XmMenuIsAccessible() */
  396.  
  397. #define XmWEAK_CHECK 1
  398. #define XmMEDIUM_CHECK 2
  399. #define XmSTRONG_CHECK 3
  400.  
  401. #define XmMENU_BEGIN 0
  402. #define XmMENU_MIDDLE 1
  403. #define XmMENU_END 2
  404.  
  405. /* Defines used when calling find_first_managed_child() */
  406. #define ANY_CHILD 0
  407. #define FIRST_BUTTON 1
  408.  
  409.  
  410. /********    Private Function Declarations    ********/
  411. #ifdef _NO_PROTO
  412.  
  413. extern void _XmPostPopupMenu() ;
  414. extern void _XmSetPopupMenuClick() ;
  415. extern Boolean _XmGetPopupMenuClick() ;
  416. extern void _XmAllowAcceleratedInsensitiveUnmanagedMenuItems();
  417. extern void _XmSetSwallowEventHandler() ;
  418. extern void _XmMenuFocus() ;
  419. extern void _XmGetActiveTopLevelMenu() ;
  420. extern Boolean _XmMatchBSelectEvent() ;
  421. extern Boolean _XmMatchBDragEvent() ;
  422. extern void _XmHandleMenuButtonPress() ;
  423. extern void _XmMenuBtnDown() ;
  424. extern void _XmMenuBtnUp() ;
  425. extern void _XmCallRowColumnMapCallback() ;
  426. extern void _XmCallRowColumnUnmapCallback() ;
  427. extern void _XmMenuPopDown () ;
  428. extern Boolean _XmIsActiveTearOff ();
  429. extern void _XmMenuHelp ();
  430. #else
  431.  
  432. extern void _XmPostPopupMenu( 
  433.                         Widget wid,
  434.                         XEvent *event) ;
  435. extern void _XmSetPopupMenuClick( 
  436.                         Widget wid,
  437. #if NeedWidePrototypes
  438.                         int popupMenuClick) ;
  439. #else
  440.                         Boolean popupMenuClick) ;
  441. #endif /* NeedWidePrototypes */
  442. extern Boolean _XmGetPopupMenuClick( 
  443.                         Widget wid) ;
  444. extern void
  445. _XmAllowAcceleratedInsensitiveUnmanagedMenuItems(
  446.         Widget wid,
  447. #if NeedWidePrototypes
  448.         int allowed ) ;
  449. #else
  450.         Boolean allowed ) ;
  451. #endif /* NeedWidePrototypes */
  452. extern void _XmSetSwallowEventHandler( 
  453.                         Widget widget,
  454. #if NeedWidePrototypes
  455.                         int add_handler) ;
  456. #else
  457.                         Boolean add_handler) ;
  458. #endif /* NeedWidePrototypes */
  459. extern void _XmMenuFocus( 
  460.                         Widget w,
  461.                         int operation,
  462.                         Time _time) ;
  463. extern void _XmGetActiveTopLevelMenu( 
  464.                         Widget wid,
  465.                         Widget *rwid) ;
  466. extern Boolean _XmMatchBSelectEvent( 
  467.                         Widget wid,
  468.                         XEvent *event) ;
  469. extern Boolean _XmMatchBDragEvent( 
  470.                         Widget wid,
  471.                         XEvent *event) ;
  472. extern void _XmHandleMenuButtonPress( 
  473.                         Widget wid,
  474.                         XEvent *event) ;
  475. extern void _XmMenuBtnDown( 
  476.                         Widget wid,
  477.                         XEvent *event,
  478.                         String *params,
  479.                         Cardinal *num_params) ;
  480. extern void _XmMenuBtnUp( 
  481.                         Widget wid,
  482.                         XEvent *event,
  483.                         String *params,
  484.                         Cardinal *num_params) ;
  485. extern void _XmCallRowColumnMapCallback( 
  486.                         Widget wid,
  487.                         XEvent *event) ;
  488. extern void _XmCallRowColumnUnmapCallback( 
  489.                         Widget wid,
  490.                         XEvent *event) ;
  491. extern void _XmMenuPopDown( 
  492.                         Widget w,
  493.                         XEvent *event,
  494.                         Boolean *popped_up) ;
  495. extern Boolean _XmIsActiveTearOff (
  496.              Widget w) ;
  497. extern void _XmMenuHelp(
  498.                         Widget wid,
  499.                         XEvent *event,
  500.                         String *params,
  501.                         Cardinal *num_params) ;
  502. #endif /* _NO_PROTO */
  503. /********    End Private Function Declarations    ********/
  504.  
  505.  
  506. #ifdef __cplusplus
  507. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  508. #endif
  509.  
  510. #endif  /* _XmRowColumnP_h */
  511. /* DON'T ADD STUFF AFTER THIS #endif */
  512.